热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

工匠|上文_SpringCloudAlibaba14OpenFeign自定义配置+调用优化+超时时间

篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudAlibaba-14OpenFeign自定义配置+调用优化+超时时间相关的知识,希望对你有一定的参考价值

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spring Cloud Alibaba - 14 OpenFeign自定义配置 + 调用优化 + 超时时间相关的知识,希望对你有一定的参考价值。



文章目录


  • 打印Feign调用日志
    • 日志级别
    • 三部曲
      • step1 添加Feign的自定义配置
      • step2 声明式接口指定配置
      • Step3 声明式接口包日志级别调整为DEBUG

    • 验证

  • 基于yml文件细粒度配置日志
    • 调用方配置yml
    • 验证

  • 使用Feign原生的注解配置
  • 拦截器的应用配置
  • Feign调用优化方案
    • Step 1 开启连接池配置
    • Step 2 调整Feign的日志级别(强烈推荐使用Basic级别的)

  • Feign的生产实践 (Feign的超时为准)
    • 服务方模拟响应过长
    • 超时设置
    • 验证

  • 源码




打印Feign调用日志

默认情况下,Feign的调用式不打印日志,我们需要通过自定义来打印我们的Feign的日志, 生产环境推荐basic


日志级别


级别输出内容
NONE(默认)不记录任何信息
BASIC仅记录请求方法、URL、响应状态和执行时间
HEADERS在BASIC基础上,记录请求和响应的HEADER
FULL记录请求和响应的HEADER、BODY和元数据



三部曲


step1 添加Feign的自定义配置

子模块 artisan-feign-api 增加 配置

import feign.Logger;
import org.springframework.context.annotation.Bean;
/**
* @author 小工匠
* @version 1.0
* @description: 千万不要添加@Configuration,不然会被作为全局配置文件共享
* @date 2022/2/3 22:19
* @mark: show me the code , change the world
*/

public class ProductCenterFeignConfig
@Bean
public Logger.Level level()
return Logger.Level.BASIC;



千万不要添加@Configuration,不然会被作为全局配置文件共享




step2 声明式接口指定配置

子模块 artisan-feign-api


Step3 声明式接口包日志级别调整为DEBUG

接口调用方 artisan-cloud-feign-order 的 application.yml

# 子模块下的声明式接口包 日志级别必须是debug ,不然不打印日志
logging:
level:
com:
artisan:
feignapi: debug




验证

启动两个服务,访问 http://localhost:8080/selectOrderInfoById/1

观察order的日志




基于yml文件细粒度配置日志

调用方配置yml

在调用方artisan-cloud-feign-order ,通过feign:client:config:微服务名称:loggerLevel: 日志级别来指定

# 基于yml文件细粒度配置 - 通过feign:client:config:微服务名称:loggerLevel日志级别来指定
feign:
client:
config:
artisan-product-center:
loggerLevel: full

支持配置多个

我们再来个 artisan-cloud-feign-pay 服务验证下




验证

启动服务,分别访问接口,观察日志




使用Feign原生的注解配置

根据自动装配我们FeignClients的配置中的默认锲约是springmvc , 如果需要修改的话,修改契约即可(使用Feign原生的API)

用的较少, 这里就不演示了。




拦截器的应用配置

Spring Cloud Alibaba - 15 微服务之间使用Feign实现参数的透传




Feign调用优化方案

Step 1 开启连接池配置


Step 2 调整Feign的日志级别(强烈推荐使用Basic级别的)

方法见上文




Feign的生产实践 (Feign的超时为准)

Feign的底层用的是Ribbon,那么我们怎么配置超时时间呢?

我们来测试下


服务方模拟响应过长




超时设置




验证

那如果我们换一下呢 (Ribbon 设置 5秒, Feign设置2秒 , Product仍然休眠3秒) 。看下什么情况

测试一下看看呢




源码

https://github.com/yangshangwei/SpringCloudAlibabMaster


推荐阅读
  • 在尝试通过自定义端口部署Spring Cloud Eureka时遇到了连接失败的问题。本文详细描述了问题的现象,并提供了有效的解决方案,以帮助遇到类似情况的开发者。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文介绍了一个使用Spring框架和Quartz调度器实现每周定时调用Web服务获取数据的小项目。通过详细配置Spring XML文件,展示了如何设置定时任务以及解决可能遇到的自动注入问题。 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
  • spring(22)JdbcTemplate
    2019独角兽企业重金招聘Python工程师标准###1.导入jar包,必须jar包:c3p0、mysql-connector、beans、con ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
author-avatar
蔡佩琬62777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有